#include <REGX52.H>
sbit DQ=P3^7;
unsigned char Onewire_Init(){
	unsigned char i;
	unsigned char ackbit;
	DQ=1;
	DQ=0;
	i = 247;while (--i);
	DQ=1;
	i = 32;while (--i);
	ackbit=DQ;
	i = 247;while (--i);
	return ackbit;
}
void  Sendbit(unsigned char Bit){
	unsigned char i;
	DQ=1;
	DQ=0;
	i = 4;while (--i);//10微秒后内释放掉表示发送1，60微秒后释放掉表示发送0
	DQ=Bit;
	i = 24;while (--i);
	DQ=1;
}
unsigned char Acbit(){
	unsigned char i;//延时函数不能设置为int类型，因为双字节和单字节自减耗费的时间是不同的  
	unsigned char Bit=0x00;
	DQ=0;
	i = 2;while (--i);
	DQ=1;
	i = 2;while (--i);
	Bit=DQ;
	i = 24;while (--i);
	return Bit;
}
void Sendbyte(unsigned char Byte){
	unsigned int i;
	for(i=0;i<8;i++){
		Sendbit(Byte&(0x01<<i));
	}
}
unsigned char Acbyte(){
	unsigned int i;
	unsigned char Byte=0x00;
	for(i=0;i<8;i++){
		if(Acbit()) {Byte|=(0x01<<i);}
	}
	return Byte;
}